package com.yang.dao.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 管理员数据库持久层实体
 * 作者：孤城暖阳y
 * 开发时间：2025-02-26
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("admin")
public class AdminDO {

    /**
     * 主键ID
     * 自增长，唯一标识管理员
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 登录账号
     * 唯一，用于管理员登录系统
     * 长度限制：64字符
     */
    private String username;

    /**
     * 加密后的密码
     * 使用BCrypt加密存储
     * 长度限制：128字符
     */
    private String password;

    /**
     * 管理员昵称
     * 用于显示的管理员名称
     * 长度限制：64字符
     */
    private String nickname;

    /**
     * 权限等级
     * 1-超级管理员
     * 2-普通管理员
     * 默认值：2
     */
    private Long level;

    /**
     * 账户状态
     * 0-禁用
     * 1-启用
     * 默认值：1
     */
    private Long status;

    /**
     * 最后登录时间
     * 记录管理员最后一次登录的时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date lastLoginTime;

    /**
     * 最后登录IP
     * 记录管理员最后一次登录的IP地址
     */
    private String lastLoginIp;

    /**
     * 创建时间
     * 记录管理员账号的创建时间
     * 默认值为当前时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     * 记录管理员账号的最后更新时间
     * 默认值为当前时间，更新时自动刷新
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

}
